package src.com.foreknow.demo2;

/**
 * Java中的运算符
 * 1.算术运算符（+ - * / % ++ --）
 *     1.1 ++ (自增)   --（自减） 例如：a++(表示变量a先参与运算然后自增加1)  ++a（变量a先自增加1，然后参与运算）  a--（同上）   --a
 * 2.赋值运算符（=）/复合赋值运算符（+= -= *= /= %= ）
 * 3.比较运算符（>  >=  <  <=  !=  ==）
 * 4.逻辑运算符（&& ||  !）
 *      a && b : 只有a和b同事为true的时候 整个表达式结果才为true，只有一个为false最终表达式的结果为false
 *      a || b :只有a和b有一个为true最终表达式的结果为true
 *      !a :取反
 * 5.三目条件运算符（三元运算符）是由？：
 *   语法： int x = (逻辑运算)? a : b;
 *   当逻辑运算为true的时候 返回 x = a 当逻辑运算为false的时候 返回 x = b
 *   注意 a和b的数据类型一定要与x的类型保持一致
 */
 public class OperatorDemo {
    public static void main(String[] args) {
        int i = 5;
        char c = (i % 2==0 )?'是':'否';
        System.out.println(c);

        System.out.println("------------------------------------------------------");
        int aa = 5;
        int bb = 3;
        int cc = 2;

        boolean x1 =(aa>bb) && (bb>cc);
        boolean x2 =(aa>bb) && (bb<cc);
        boolean x3 =(aa>bb) || (bb>cc);
        boolean x4 =(aa>bb) || (bb<cc);
        boolean x5 =(aa<bb) || (bb<cc);
        boolean x6 =!(aa>bb);

        System.out.println(x1);
        System.out.println(x2);
        System.out.println(x3);
        System.out.println(x4);
        System.out.println(x5);
        System.out.println(x6);

        //逻辑运算符会产生短路的情况
        //c = a && b  a = false  b?  c = false   c = a || b  a = true b? c = true


        System.out.println("------------------------------------------");

        //比较运算符（>  >=  <  <=  !=  ==）
        //boolean isRight = aa>bb;
        System.out.println(aa>bb);
        System.out.println(aa>=bb);
        System.out.println(aa<bb);
        System.out.println(aa<=bb);
        System.out.println(aa!=bb);
        System.out.println(aa==bb);
        //赋值运算符（=）/复合赋值运算符
        // bb += aa;//bb=bb+aa
        // bb -= aa;
        // bb *= aa;
        // bb/ = aa;
         bb %= aa;
         System.out.println(bb);

        short ss =35;
        //ss = ss +1; 报错了 原因：ss为short类型 而1为int类型 short+int = int 需要强制类型转换
        ss += 1;
        System.out.println(ss);





        int a = 5;
        int b = 2;
        double d = 2.5;
        double  d1=a+d;
        double d2 =a/d;
        System.out.println(d1);
        System.out.println(d2);
        System.out.println(a % b);
        System.out.println(a * b);

        int x =1;
        int y =x++;
        System.out.println(y);
        System.out.println(x);

        int k = 1;
        int m = 3;
        int z = 5;

        int h = (k++)+(--m)+(z++)+(++k)+(m--)+(++z);
        System.out.println(h);





    }
}
